package com.pizzaonline.servlets;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jdom.Element;
import com.pizzaonline.utils.Utils;
import com.pizzaonline.utils.XMLControler;
import com.pizzaonline.JDBC.DataBase;
import com.pizzaonline.JDBC.DBControler;

/**
 * Servlet implementation class for Servlet: AjoutSalades
 *
 */
 public class AjoutSalades extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;
   
    /* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	public AjoutSalades() {
		super();
	}   	
	
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}  	
		
	/* (non-Javadoc)
	 * @see javax.servlet.GenericServlet#init()
	 */
	public void init() throws ServletException {
		// TODO Auto-generated method stub
		super.init();
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		//Mode UTF-8
		request.setCharacterEncoding("UTF-8");
		
		// Récupération des paramètres
		String nom_salade= request.getParameter("nom_salade");
		//String prix_salade = request.getParameter("prix_salade");		
		String[] ingredients = request.getParameterValues("ingredients");
		int prix_int = -1;
		
		//Type de réponse
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		
		//Test des valeurs
		if(nom_salade.equals("")) {
			out.println("<b><font color=\"red\">Le champ nom est vide</font></b><br/>");
			out.println("<a href=\"xsql/ajoutSalade.xsql\">Recommencer</a><br/>");	
			return;
		}
		
		if(ingredients == null){
			out.println("<b><font color=\"red\">Aucun ingrédient sélectionné</font></b><br/>");
			out.println("<a href=\"xsql/ajoutSalade.xsql\">Recommencer</a><br/>");	
			return;
		}
		
		//Formatage du nom
		nom_salade = Utils.formattage(nom_salade.trim());
		System.out.println(nom_salade);
		
		//Insertion dans le fichier XML
		float prixSalade = 0;
		ServletContext c = this.getServletConfig().getServletContext();
		try{
			//Lecture du fichier XML
			XMLControler.readXMLFile("carte.xml");
			System.out.println("Lecture du fichier XML");
				
			Element salades = XMLControler.racine.getChild("Salades");
				
			//Création d'un nouvel élément Salade
			Element newSalade = new Element("Salade");
			newSalade.setAttribute("nomSalade",nom_salade);

			//Calcul dynamique du prix de la salade
			DataBase db = new DataBase();
			prixSalade = DBControler.getSommeIngredients(ingredients, db);
			newSalade.setAttribute("prix",String.valueOf(prixSalade));
			
			//Ajout des ingrédients
			for(int i=0;i<ingredients.length;i++){
				Element tmpIngredient = new Element("Ingredient");
				tmpIngredient.addContent(ingredients[i]);
				newSalade.addContent(tmpIngredient);
			}
			salades.addContent(newSalade);
				
			//Sauvegarde du fichier XML
			XMLControler.saveXMLFile("carte.xml");
			out.println("<b><font color=\"green\">Insertion réussie dans le fichier XML</font></b><br/>");
			out.println("<a href=\"xsql/ajoutSalade.xsql\">Ajouter une autre salade</a><br/>");	
		}
		catch(Exception e){
			System.out.println("Erreur de lecture du fichier XML");
			out.println("<b><font color=\"red\">Erreur d'insertion dans le fichier XML</font></b><br/>");
			out.println("<a href=\"xsql/ajoutSalade.xsql\">Recommencer</a><br/>");	
			e.printStackTrace();
		}
	}
}   	  	  
	